Oft stehen sowohl die mengenorientierten Abfragesprache SQL als auch eine satzorientierte Abfragesprache wie VBA/DAO zur Wahl. Die folgende Aufgabe kann zum Beispiel mit DAO oder SQL gelöst werden:
Wer im Formular FrmAllgemeines den Aufgabentyp Mehrfachwahl gewählt hat und dann die Schaltfläche 'Aufgabe bearbeiten' drückt, gelangt in das Formular FrmMehrfachwahl. Dort können der Fragentext und vier Alternativentexte angefügt oder bearbeitet werden. Falls für die laufende Aufgabe noch kein Fragentext existiert, muss die Ereignisprozedur Form_Open für den Fragen- und die Alternativentexte Skelette einfügen, welche der Benutzer nach dem Öffnen des Formulars FrmMehrfachwahl vervollständigen kann. FrmMehrfachwahl sieht mit den eingefügten Skeletten wie folgt aus:

Jeder der vier Alternativenskelette wird durch den seinen Fragenschlüssel - eine Zahl zwischen 1 und 4 - eingeleitet, und jede Benutzerlösung wird am rechten Rand durch ein leeres Kästchen angezeigt. Der folgende Entwurfscode skizziert die Logik der Ereignisprozedur:
Öffne FrmMehrfachwahl
Falls zur laufenden Aufgabe kein Fragentext existiert dann
Füge der Tabelle FRAGENTEXT eine Zeile mit den folgenden Attributwerten hinzu:
Fragenschlüssel = Fragenschlüssel der laufenden Aufgabe
Fragentext = ""
Füge MEHRFACH_ALTERNATIVEN vier Zeilen mit den folgenden Attributwerten hinzu:
Fragenschlüssel = Fragenschlüssel der laufenden Aufgabe
Alternativenschlüssel = 1, 2, 3 bzw. 4
Alternativentext = ""
Musterlösung = 0
Dieser Entwurfscode lässt sich entweder mit DAO-Methoden oder eingebetteten SQL-Anweisungen implementieren. Beide Varianten prüfen zuerst, ob die Tabelle FRAGENTEXT für den laufenden Fragenschlüssel bereits eine Zeile enthält. Wenn zum Beispiel für den laufenden Fragenschlüssel 1 das Ergebnis des Funktionsaufrufs DLookup("[Fragenschlüssel]", "FRAGENTEXT", "Fragenschlüssel = 1") Null ist, dann benutzt der Code die DAO-Methode AddNew (1) oder die SQL-Aktionsanweisung INSERT (2), um die Skelette für den Fragentext und die vier Alternativen einzufügen. Der variantentypische Code ist fett markiert. Sie können sich die DAO-Variante ansehen, indem Sie aus dem Formular FrmMehrwachwahl Ansicht/Entwurfsansicht wählen, »Alt/Enter drücken und dann von der Ereignisprozedur Beim Öffnen des Formulars zum Code gehen.
1. Implementation mit DAO
'--- Alternativenskelette einfügen
Private Sub Form_Open(Cancel As Integer)
Dim Kriterium As String
Dim MCFragentext As Variant
Dim strFragenschlüssel As String
Dim Alternativenschlüssel As Integer
Dim strAlternativenschlüssel As String
Dim dbs As Database
Dim rstMEHRFACHWAHL_ALTERNATIVEN As Recordset
Dim rstFRAGENTEXT As Recordset'OpenArgs: aus FrmAllgemeines beim Öffnen von FrmMehrfachwahl übergebenes Argument
strFragenschlüssel = Forms!FrmMehrfachwahl.OpenArgs
Kriterium = "[Fragenschlüssel]=" & strFragenschlüssel
MCFragentext = DLookup("[Fragenschlüssel]", "FRAGENTEXT", Kriterium)
'-- Nur anfügen, falls Aufgabe neu
If IsNull(MCFragentext) = True Then
'*** Implementation mit DAO
Set dbs = CurrentDb
Set rstFRAGENTEXT = dbs.OpenRecordset("FRAGENTEXT")
With rstFRAGENTEXT
.AddNew
!Fragenschlüssel = strFragenschlüssel
!Fragentext = ""
.Update
.Close
End With 'rstFRAGEN
Set rstFRAGENTEXT = Nothing
Set rstMEHRFACHWAHL_ALTERNATIVEN = dbs.OpenRecordset("MEHRFACHWAHL_ALTERNATIVEN")
With rstMEHRFACHWAHL_ALTERNATIVEN
For Alternativenschlüssel = 1 To 4
strAlternativenschlüssel = CStr(Alternativenschlüssel)
.AddNew
!Fragenschlüssel = strFragenschlüssel
!Alternativenschlüssel = strAlternativenschlüssel
!Alternativentext = ""
!Musterlösung = 0
.Update
Next Alternativenschlüssel
.Close
End With 'rstMEHRFACHWAHL_ALTERNATIVEN
Set rstMEHRFACHWAHL_ALTERNATIVEN = Nothing
Set dbs = Nothing
End If 'IsNull(MCFragentext)
Requery 'Bildschirm anpassen
End Sub2. Implementation mit SQL
'--- Implemenation mit SQL
Dim strSQL As String
'... (wie oben)
strSQL = "INSERT INTO FRAGENTEXT " & _
"(Fragenschlüssel, Fragentext) " & _
"VALUES ('" & strFragenschlüssel & "', '');"
.Execute strSQL, dbFailOnError
For Alternativenschlüssel = 1 To 4
strAlternativenschlüssel = CStr(Alternativenschlüssel)
strSQL = "INSERT INTO MEHRFACHWAHL_ALTERNATIVEN " & _
"(Fragenschlüssel, Alternativenschlüssel, Alternativentext, Musterlösung) " & _
"VALUES ('" & strFragenschlüssel & "', '" & strAlternativenschlüssel & "', '', '0');"
.Execute strSQL, dbFailOnError
Next Alternativenschlüssel
'...(wie oben)